const express = require('express');
const helmet = require('helmet');
const rateLimit = require('express-rate-limit');
const userRouter = require('./routes/users');

const app = express();

app.use(helmet()); // 默认安全头部

// ====================
// 2. 基础功能中间件
// ====================
app.use(express.json()); // 请求体解析
app.use(express.urlencoded({ extended: true })); // 表单数据解析
// ====================
// 3. 全局工具中间件
// ====================
// 统一响应格式
app.use(require('./middlewares/responseMiddleware'));

// ====================
// 4. 限流和路由保护
// ====================
const apiLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15分钟
  max: 100, // 每个IP限制100次请求
  standardHeaders: true, // 返回RateLimit头信息
  legacyHeaders: false // 禁用X-RateLimit头
});
app.use('/api/', apiLimiter);

// ====================
// 5. 业务路由
// ====================
app.get('/', (req, res) => res.send('Hello 2025!')); // 根路由
app.use('/user', userRouter); // 用户路由

// ====================
// 6. 错误处理中间件（最后注册）
// ====================
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.apiError(err.message, err.status || 500);
});

module.exports = app;









